extensions: add fast paths going from gray to premul alpha rgb - for resampling
authorØyvind Kolås <pippin@gimp.org>
Thu, 15 Dec 2016 23:39:08 +0000 (00:39 +0100)
committerØyvind Kolås <pippin@gimp.org>
Thu, 15 Dec 2016 23:47:26 +0000 (00:47 +0100)
extensions/gggl-lies.c
extensions/gggl.c

index 5d50f5bffe10c71d8f0a684730a932d2c27a6ee8..b8efc836aa9ab883b847267c7a334eaa50b3b209 100644 (file)
@@ -418,6 +418,29 @@ conv_rgbaF_rgbF (unsigned char *src, unsigned char *dst, long samples)
   return samples;
 }
 
+
+static long
+conv_gF_rgbaF (unsigned char *src, unsigned char *dst, long samples)
+{
+  long n = samples;
+
+  while (n--)
+    {
+      *(int *) dst   = (*(int *) src);
+      dst           += 4;
+      *(int *) dst   = (*(int *) src);
+      dst           += 4;
+      *(int *) dst   = (*(int *) src);
+      dst           += 4;
+      *(float *) dst = 1.0;
+      dst           += 4;
+      src           += 4;
+    }
+  return samples;
+}
+
+#define conv_gF_rgbAF conv_gF_rgbaF
+
 static long
 conv_rgbF_rgbaF (unsigned char *src, unsigned char *dst, long samples)
 {
@@ -840,6 +863,8 @@ init (void)
   o (gaF, ga8);
   o (gAF, gA8);
   o (gF, g8);
+  o (gF, rgbAF);
+  o (gF, rgbaF);
   o (ga8, gaF);
   o (gA8, gAF);
   o (g8, gF);
index c4b8ce40f34d6f96433d0c54f1c9b4e1af21e4d2..b01659ffbb9fe73f397534e304fa0fb8f8481bee 100644 (file)
@@ -607,6 +607,28 @@ conv_rgbA16_rgbaF (unsigned char *src, unsigned char *dst, long samples)
   return samples;
 }
 
+static long
+conv_gF_rgbaF (unsigned char *src, unsigned char *dst, long samples)
+{
+  long n = samples;
+
+  while (n--)
+    {
+      *(int *) dst   = (*(int *) src);
+      dst           += 4;
+      *(int *) dst   = (*(int *) src);
+      dst           += 4;
+      *(int *) dst   = (*(int *) src);
+      dst           += 4;
+      *(float *) dst = 1.0;
+      dst           += 4;
+      src           += 4;
+    }
+  return samples;
+}
+
+#define conv_gF_rgbAF conv_gF_rgbaF
+
 /*
    static long
    conv_rgb8_rgbaF (unsigned char *src,
@@ -1102,6 +1124,8 @@ init (void)
   o (gF, gaF);
   o (gF, gAF);
   o (gF, rgbF);
+  o (gF, rgbaF);
+  o (gF, rgbAF);
   o (gaF, rgbaF);
   o (gAF, rgbAF);
   o (rgbaF, rgb8);